package com.hly.tool.attribute;

import com.matrixone.apps.domain.DomainObject;
import matrix.db.AttributeList;
import matrix.db.Context;
import matrix.util.MatrixException;
import matrix.util.StringList;
import org.apache.commons.lang3.StringUtils;

import java.util.HashMap;
import java.util.Map;

/**
 * @author ：Jack Hao
 * @date ：Created in 2021/7/21 17:08
 * @description：
 */
public class Attribute
{


    /**
     * 获取 DomainObject 的属性集合
     * 如果是多值的使用 ,分割
     *
     * @param context
     * @param domainObject
     * @return
     * @throws MatrixException
     */
    public static Map getObjAttributeMap(Context context, DomainObject domainObject) throws MatrixException
    {
        Map attrMap = new HashMap();
        AttributeList attributeValues = domainObject.getAttributeValues(context);
        for (int i = 0; i < attributeValues.size(); i++)
        {
            matrix.db.Attribute attribute = attributeValues.get(i);
            String attrName = attribute.getName();
            String attrValue = "";
            boolean multiVal = attribute.isMultiVal();
            if (multiVal)
            {
                StringList valueList = attribute.getValueList();
                attrValue = StringUtils.join(valueList.toArray(), ", ");
            } else
            {
                attrValue = attribute.getValue();
            }
            attrMap.put(attrName, attrValue);
        }
        return attrMap;
    }

    /**
     * 获取 DomainObject 的属性集合
     * 如果是多值的使用 ,分割
     *
     * @param context
     * @param objectId
     * @return
     * @throws MatrixException
     */
    public static Map getObjAttributeMap(Context context, String objectId) throws MatrixException
    {
        DomainObject domainObject = DomainObject.newInstance(context, objectId);
        return getObjAttributeMap(context, domainObject);
    }

}
